package kr.co.sdworld.stone;

public class Pager {
	private int startNum;
	private int endNum;
	private int totalPage;
	
	public int getStartNum() {
		return startNum;
	}
	public void setStartNum(int startNum) {
		this.startNum = startNum;
	}
	public int getEndNum() {
		return endNum;
	}
	public void setEndNum(int endNum) {
		this.endNum = endNum;
	}
	public int getTotalPage() {
		return totalPage;
	}
	public void setTotalPage(int totalPage) {
		this.totalPage = totalPage;
	}
	
	public static Pager makePager(int totalCount, int currentPage, int maxRow)
	{
		/***
		 * 157 개중 10 개씩 보여줘야 하고 페이지를 보여줘야 한다면
		 * 총 16 페이지가 보여지게 된다.
		 * 각 페이지마다 startRow 와 endRow 를 구한다.
		 */
		int totalCountRemain = totalCount % maxRow;
		int additionalPage = 0;
		if( totalCountRemain > 0)
		{
			additionalPage = 1;
		}
		
		/**
		 * 전체 페이지
		 * 0으로 떨어지지 않는경우 : 157 / 10 + 1
		 * 0으로 떨어지는 경우 : 150 / 10 + 0
		 */
		int totalPage = (totalCount / maxRow) + additionalPage;
		
		/**
		 * 시작 페이지
		 * 입력된 페이지에 maxRow 를 곱하여 구하게 된다.
		 * 페이지가 1이고  maxRow 가 15인 경우
		 *  - endRow : 1 * 15 = 15;
		 *  - startRow : 15 - 15 = 0;
		 * 페이지가 3이고 maxRow 가 15인 경우
		 *  - endRow : 3 * 15 = 45;
		 *  - startRow : 45 - 15 = 30;
		 * 
		 * 데이터베이스의 특성에 따라서, 페이지 쿼리에 따라서 각 startRow, endRow 는 1이 더해질 수 있다.
		 */
		
		int endRow = currentPage * maxRow;
		int startRow = endRow - maxRow;
		
		Pager pager = new Pager();
		pager.setTotalPage(totalPage);
		pager.setEndNum(endRow);
		pager.setStartNum(startRow);
		
		return pager;
	}
}
